---
title: अंतर्राष्ट्रीयकरण (i18n)
description: जानें कि एकाधिक भाषाओं का समर्थन करने के लिए अपनी Starlight साइट को कैसे कॉन्फ़िगर करें।
---

import { FileTree, Steps } from '@astrojs/starlight/components';

Starlight बहुभाषी साइटों के लिए अंतर्निहित समर्थन प्रदान करता है, जिसमें रूटिंग, फ़ॉलबैक कंटेंट और पूर्ण दाएं से बाएं (RTL) भाषा समर्थन शामिल है।

## i18n कॉन्फ़िगर करें

<Steps>

1. Starlight एकीकरण में [`locales`](/hi/reference/configuration/#locales) और [`defaultLocale`](/hi/reference/configuration/#defaultlocale) पास करके Starlight को उन भाषाओं के बारे में बताएं जिनका आप समर्थन करते हैं:

   ```js {9-26}
   // astro.config.mjs
   import { defineConfig } from 'astro/config';
   import starlight from '@astrojs/starlight';

   export default defineConfig({
   	integrations: [
   		starlight({
   			title: 'मेरे दस्तावेज़',
   			// इस साइट के लिए अंग्रेजी को डिफ़ॉल्ट भाषा के रूप में सेट करें।
   			defaultLocale: 'en',
   			locales: {
   				// `src/content/docs/en/` में अंग्रेजी दस्तावेज़
   				en: {
   					label: 'English',
   				},
   				// `src/content/docs/zh-cn/` में सरलीकृत चीनी दस्तावेज़
   				'zh-cn': {
   					label: '简体中文',
   					lang: 'zh-CN',
   				},
   				// `src/content/docs/ar/` में अरबी दस्तावेज़
   				ar: {
   					label: 'العربية',
   					dir: 'rtl',
   				},
   			},
   		}),
   	],
   });
   ```

   आपके `defaultLocale` का उपयोग फ़ॉलबैक कंटेंट और UI लेबल के लिए किया जाएगा, इसलिए वह भाषा चुनें जिसमें आप कंटेंट लिखने की सबसे अधिक संभावना रखते हैं, या जिसके लिए आपके पास पहले से ही कंटेंट है।

2. `src/content/docs/` में प्रत्येक भाषा के लिए एक निर्देशिका बनाएं।
   उदाहरण के लिए, ऊपर दिखाए गए कॉन्फ़िगरेशन के लिए, निम्नलिखित फ़ोल्डर बनाएं:

   <FileTree>

   - src/
     - content/
       - docs/
         - ar/
         - en/
         - zh-cn/

   </FileTree>

3. अब आप अपनी भाषा निर्देशिकाओं में कंटेंट फ़ाइलें जोड़ सकते हैं। सभी भाषाओं में पेजों को संबद्ध करने के लिए एक ही फ़ाइल नाम का उपयोग करें और फ़ॉलबैक कंटेंट अनुवाद सूचनाएं और बहुत कुछ सहित Starlight के i18n सुविधाओं के पूर्ण सेट का लाभ उठाएं।

   उदाहरण के लिए, अरबी और अंग्रेजी के मुखपेज को दर्शाने के लिए क्रमशः `ar/index.md` और `en/index.md` बनाएं।

</Steps>

अधिक उन्नत i18n परिदृश्यों के लिए, Starlight [Astro के `i18n` कॉन्फ़िगरेशन](https://docs.astro.build/hi/guides/internationalization/#configure-i18n-routing) विकल्प का उपयोग करके अंतर्राष्ट्रीयकरण को कॉन्फ़िगर करने का भी समर्थन करता है।

### root locale का उपयोग करें

आप किसी भाषा को उसके पथ में बिना किसी i18n उपसर्ग के प्रस्तुत करने के लिए “root” locale का उपयोग कर सकते हैं। उदाहरण के लिए, यदि अंग्रेजी आपका मूल स्थान है, तो एक अंग्रेजी पेज पथ `/en/about` के बजाय `/about` जैसा दिखेगा।

root locale सेट करने के लिए, अपने `locales` कॉन्फ़िगरेशन में `root` कुंजी का उपयोग करें। यदि root locale आपकी कंटेंट के लिए डिफ़ॉल्ट locale भी है, तो `defaultLocale` को हटा दें या इसे ``root'' पर सेट करें।

```js {9,11-14}
// astro.config.mjs
import { defineConfig } from 'astro/config';
import starlight from '@astrojs/starlight';

export default defineConfig({
	integrations: [
		starlight({
			title: 'मेरे दस्तावेज़',
			defaultLocale: 'root', // वैकल्पिक
			locales: {
				root: {
					label: 'English',
					lang: 'en', // रूट स्थानों के लिए भाषा विशेषता आवश्यक है
				},
				'zh-cn': {
					label: '简体中文',
					lang: 'zh-CN',
				},
			},
		}),
	],
});
```

`root` locale का उपयोग करते समय, उस भाषा के पेजों को समर्पित भाषा फ़ोल्डर के बजाय `src/content/docs/` में रखें। उदाहरण के लिए, उपरोक्त कॉन्फ़िगरेशन का उपयोग करते समय अंग्रेजी और चीनी के लिए होम पेज फ़ाइलें यहां दी गई हैं:

<FileTree>

- src/
  - content/
    - docs/
      - **index.md**
      - zh-cn/
        - **index.md**

</FileTree>

#### एकभाषी साइटें

डिफ़ॉल्ट रूप से, Starlight एक एकभाषी (अंग्रेजी) साइट है। किसी अन्य भाषा में एकल भाषा साइट बनाने के लिए, इसे अपने `locales` कॉन्फ़िगरेशन में `root` के रूप में सेट करें:

```diff lang="js" {10-13}
// astro.config.mjs
import { defineConfig } from 'astro/config';
import starlight from '@astrojs/starlight';

export default defineConfig({
	integrations: [
		starlight({
			title: 'मेरे दस्तावेज़',
			locales: {
				root: {
					label: '简体中文',
					lang: 'zh-CN',
				},
			},
		}),
	],
});
```

यह आपको भाषा पिकर जैसी बहु-भाषा साइटों के लिए अन्य अंतर्राष्ट्रीयकरण सुविधाओं को सक्षम किए बिना Starlight की डिफ़ॉल्ट भाषा को ओवरराइड करने की अनुमति देता है।

## फ़ॉलबैक कंटेंट

Starlight आपसे अपेक्षा करता है कि आप अपनी सभी भाषाओं में समान पेज बनाएं। उदाहरण के लिए, यदि आपके पास `en/about.md` फ़ाइल है, तो आपके द्वारा समर्थित प्रत्येक अन्य भाषा के लिए `about.md` बनाएं। यह Starlight को उन पेजों के लिए स्वचालित फ़ॉलबैक कंटेंट प्रदान करने की अनुमति देता है जिनका अभी तक अनुवाद नहीं किया गया है।

यदि किसी भाषा के लिए अनुवाद अभी तक उपलब्ध नहीं है, तो Starlight पाठकों को उस पेज की कंटेंट डिफ़ॉल्ट भाषा में दिखाएगा (`defaultLocale` के माध्यम से सेट होकर)। उदाहरण के लिए, यदि आपने अभी तक अपने About पेज का फ्रेंच संस्करण नहीं बनाया है और आपकी डिफ़ॉल्ट भाषा अंग्रेजी है, तो `/fr/about` पर आने वाले दर्शकों को `/en/about` से अंग्रेजी कंटेंट इस सूचना के साथ दिखाई देगी कि इस पेज पर है अभी तक अनुवाद नहीं किया गया है। यह आपको अपनी डिफ़ॉल्ट भाषा में कंटेंट जोड़ने में मदद करता है और फिर जब आपके अनुवादकों के पास समय हो तो उसका उत्तरोत्तर अनुवाद करने में मदद करता है।

## साइट शीर्षक का अनुवाद करें

डिफ़ॉल्ट रूप से, Starlight सभी भाषाओं के लिए समान साइट शीर्षक का उपयोग करेगा।
यदि आपको प्रत्येक स्थान के लिए शीर्षक को अनुकूलित करने की आवश्यकता है, तो आप Starlight के विकल्पों में [`title`](/hi/reference/configuration/#title-required) के लिए एक ऑब्जेक्ट पास कर सकते हैं:

```diff lang="js"
// astro.config.mjs
import { defineConfig } from 'astro/config';
import starlight from '@astrojs/starlight';

export default defineConfig({
	integrations: [
		starlight({
-			title: 'मेरे दस्तावेज़',
+			title: {
+				hi: 'मेरे दस्तावेज़',
+				'zh-CN': '我的文档',
+			},
			defaultLocale: 'hi',
			locales: {
				hi: { label: 'Hindi' },
				'zh-cn': { label: '简体中文', lang: 'zh-CN' },
			},
		}),
	],
});
```

## Starlight के UI का अनुवाद करें

import LanguagesList from '~/components/languages-list.astro';
import UIStringsList from '~/components/ui-strings-list.astro';

अनुवादित कंटेंट फ़ाइलों को होस्ट करने के अलावा, Starlight आपको डिफ़ॉल्ट UI स्ट्रिंग्स (उदाहरण के लिए कंटेंट तालिका में "इस पेज पर" शीर्षक) का अनुवाद करने की अनुमति देता है ताकि आपके पाठक आपकी साइट को पूरी तरह से चयनित भाषा में अनुभव कर सकें।

<LanguagesList startsSentence /> अनुवादित UI स्ट्रिंग्स सामने से मिलती हैं , और
हम [अधिक डिफ़ॉल्ट भाषाएँ जोड़ने के लिए
योगदान](https://github.com/withastro/starlight/blob/main/CONTRIBUTING.md) का
स्वागत करते हैं।

आप `i18n` डेटा संग्रह के माध्यम से उन अतिरिक्त भाषाओं के लिए अनुवाद प्रदान कर सकते हैं जिनका आप समर्थन करते हैं - या हमारे डिफ़ॉल्ट लेबल को ओवरराइड कर सकते हैं।

<Steps>

1. `i18n` डेटा संग्रह को `src/content/config.ts` में कॉन्फ़िगर करें यदि यह पहले से कॉन्फ़िगर नहीं है:

   ```diff lang="js" ins=/, (i18nSchema)/
   // src/content/config.ts
   import { defineCollection } from 'astro:content';
   import { docsSchema, i18nSchema } from '@astrojs/starlight/schema';

   export const collections = {
   	docs: defineCollection({ schema: docsSchema() }),
   +	i18n: defineCollection({ type: 'data', schema: i18nSchema() }),
   };
   ```

2. प्रत्येक अतिरिक्त locale के लिए `src/content/i18n/` में एक JSON फ़ाइल बनाएं, जिसके लिए आप UI अनुवाद स्ट्रिंग प्रदान करना चाहते हैं।
   उदाहरण के लिए, यह अरबी और सरलीकृत चीनी के लिए अनुवाद फ़ाइलें जोड़ेगा:

   <FileTree>

   - src/
     - content/
       - i18n/
         - ar.json
         - zh-CN.json

   </FileTree>

3. जिन कुंजियों का आप JSON फ़ाइलों में अनुवाद करना चाहते हैं उनके लिए अनुवाद जोड़ें। केवल मूल्यों का अनुवाद करें, कुंजियाँ अंग्रेजी में छोड़ें (जैसे की `"search.label": "Buscar"`)
   ये मौजूदा स्ट्रिंग्स के अंग्रेजी डिफ़ॉल्ट हैं जिन्हे Starlight प्रदर्शित करता हैं :

   <UIStringsList />

   Starlight के कोड ब्लॉक [Expressive Code](https://github.com/expressive-code/expressive-code) लाइब्रेरी द्वारा संचालित होते हैं।
   आप `expressiveCode` कुंजियों का उपयोग करके उसी JSON फ़ाइल में इसके UI स्ट्रिंग्स के लिए अनुवाद सेट कर सकते हैं:

   ```json
   {
   	"expressiveCode.copyButtonCopied": "Copied!",
   	"expressiveCode.copyButtonTooltip": "Copy to clipboard",
   	"expressiveCode.terminalWindowFallbackTitle": "Terminal window"
   }
   ```

   Starlight का खोज मोडल [Pagefind](https://pagefind.app/) लाइब्रेरी द्वारा संचालित है।
   आप `pagefind` कुंजियों का उपयोग करके उसी JSON फ़ाइल में Pagefind के UI के लिए अनुवाद सेट कर सकते हैं:

   ```json
   {
   	"pagefind.clear_search": "Clear",
   	"pagefind.load_more": "Load more results",
   	"pagefind.search_label": "Search this site",
   	"pagefind.filters_label": "Filters",
   	"pagefind.zero_results": "No results for [SEARCH_TERM]",
   	"pagefind.many_results": "[COUNT] results for [SEARCH_TERM]",
   	"pagefind.one_result": "[COUNT] result for [SEARCH_TERM]",
   	"pagefind.alt_search": "No results for [SEARCH_TERM]. Showing results for [DIFFERENT_TERM] instead",
   	"pagefind.search_suggestion": "No results for [SEARCH_TERM]. Try one of the following searches:",
   	"pagefind.searching": "Searching for [SEARCH_TERM]..."
   }
   ```

</Steps>

### अनुवाद स्कीमा विस्तृत करें

`i18nSchema()` विकल्पों में विस्तार सेट करके अपनी साइट के अनुवाद शब्दकोशों में कस्टम कुंजियाँ जोड़ें।
निम्नलिखित उदाहरण में, डिफ़ॉल्ट कुंजियों में एक नई, वैकल्पिक `custom.label` कुंजी जोड़ी गयी है:

```diff lang="js"
// src/content/config.ts
import { defineCollection, z } from 'astro:content';
import { docsSchema, i18nSchema } from '@astrojs/starlight/schema';

export const collections = {
	docs: defineCollection({ schema: docsSchema() }),
	i18n: defineCollection({
		type: 'data',
		schema: i18nSchema({
+			extend: z.object({
+				'custom.label': z.string().optional(),
+			}),
		}),
	}),
};
```

Astro दस्तावेज़ में ["एक संग्रह स्कीमा को परिभाषित करना"](https://docs.astro.build/hi/guides/content-collections/#defining-a-collection-schema) में कंटेंट संग्रह स्कीमा के बारे में और जानें।

## वर्तमान लोकेल तक पहुँचना

आप `.astro` अवयवों में वर्तमान लोकेल पढ़ने के लिए [`Astro.currentLocale`](https://docs.astro.build/hi/reference/api-reference/#astrocurrentlocale) का उपयोग कर सकते हैं।

निम्नलिखित उदाहरण वर्तमान लोकेल को पढ़ता है और इसका उपयोग वर्तमान भाषा में एक परिचय पेज के लिए लिंक बनाने के लिए करता है:

```astro
---
// src/components/AboutLink.astro
---

<a href={`/${Astro.currentLocale}/about`}>के बारे में</a>
```
